package com.youngjun.user.service;

import com.youngjun.common.mybatis.service.support.BaseService;
import com.youngjun.user.mapper.RoleMapper;
import com.youngjun.user.pojo.domain.Role;
import com.youngjun.user.pojo.dto.RoleDTO;
import com.youngjun.user.pojo.dto.query.RoleQueryDTO;
import com.youngjun.user.pojo.vo.RoleVO;

import java.util.List;

public interface RoleService extends BaseService<Role,RoleMapper> {

    /**
     * 根据用户id查询角色信息
     * @param userId 用户Id
     * @return List<RoleVO>
     */
    List<RoleVO> queryListByUserId(Long userId);

    /**
     * 查询角色信息
     */
    List<RoleVO> queryCurrentRoleList();

    /**
     * 查询角色信息
     * @param dto 查询参数
     * @return List<RoleVO>
     */
    List<RoleVO> queryListByCurrentRole();

    RoleVO createByCurrentRole(RoleDTO dto);

    RoleVO modifyByCurrentRole(RoleDTO dto);

    /**
     * 删除角色信息
     * @param roleId 角色id
     */
    void deleteByCurrentRole(Long roleId);

    /**
     * 查询角色信息
     * @param dto 查询参数
     * @return List<RoleVO>
     */
    List<RoleVO> queryListByCurrentOrganization(RoleQueryDTO dto);

    /**
     * 查询角色信息
     * @param dto 查询参数
     * @return List<RoleVO>
     */
    List<RoleVO> queryList(RoleQueryDTO dto);

    /**
     * 创建角色信息
     * @param dto 角色信息
     * @return RoleVO
     */
    RoleVO create(RoleDTO dto);

    /**
     * 修改角色信息
     * @param dto 角色信息
     * @return RoleVO
     */
    RoleVO modify(RoleDTO dto);

    /**
     * 删除角色信息
     * @param roleId 角色id
     */
    void delete(Long roleId);

}